import subprocess
from penguin import desk

class WechatLogin:

    def run_and_login(self, path:str)-> bool:
        """
        运行微信并登录。只有选择过自动登录功能，此方法才能起作用。

        参数：
            path 微信可执行程序安装目录。
        返回：
            成功返回True否则返回False
        """
        try:
            subprocess.Popen(path)
            # 尝试获取微信登录窗口，找到登录按钮，点击登录。
            wechat_login = desk.Control(searchDepth=1, ClassName='WeChatLoginWndForPC')
            login_botton = wechat_login.ButtonControl(Name='进入微信')
            login_botton.Click()
            return True          
        except LookupError as e:
            # todo 1.日志记录，2.如果需要扫码登录应该提醒重新设置微信。
            if 'WeChatLoginWndForPC' in e.__str__():
                print('尝试启动微信时没能找到微信程序登录窗口。') 
            if 'WeChatMainWndForPC' in e.__str__():
                print('尝试启动微信后没能找到微信程序主窗口。')
            return False
        except Exception as e:
            print('尝试启动微信时出错。') # todo 1.日志记录。
            return False